package main

import "fmt"

// 常量
//定义了常量之后就不能修改，在程序运行期间不会更改
const pi = 3.1415

// 批量声明常量
const (
	statusOk = 200
	notFound = 404
)

// 批量声明常量时，如果某一行后没有赋值，默认就和上一行一致
const (
	n1 = 100
	n2
	n3
)

// iota: 类似枚举
const (
	a1 = iota // 0
	a2        // 1
	a3        // 3
)

const (
	b1 = iota // 0
	b2        // 1
	_         // 2
	b3        //3
)

// 插队
const (
	m1 = iota // 0
	m2 = 100
	m3 = iota // 2
	m4
)

// 多个变量声明在一行
const (
	d1, d2 = iota + 1, iota + 2 // d1: 1 d2: 2
	d3, d4 = iota + 1, iota + 2 // d3: 2 d4 : 3
)

// 定时数量级

// 定义数量级 （这里的<<表示左移操作，1<<10表示将1的二进制表示向左移10位，也就是由1变成了10000000000，
// 也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位，也就是由10变成了1000，也就是十进制的8。）
const (
	_  = iota
	KB = 1 << (10 * iota)
	MB = 1 << (10 * iota)
	GB = 1 << (10 * iota)
	TB = 1 << (10 * iota)
	PB = 1 << (10 * iota)
)

func main() {
	//fmt.Println("n1:", n1)
	//fmt.Println("n2:", n2)
	//
	//fmt.Println("a1:", a1)
	//fmt.Println("a2:", a2)
	//
	//fmt.Println("m1:", m1)
	//fmt.Println("m2:", m2)
	//fmt.Println("m3:", m3)

	fmt.Println("d1:", d1)
	fmt.Println("d2:", d2)
	fmt.Println("d3:", d3)
}
